home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / CIncludes / SocketServices.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-08-21  |  20.9 KB  |  746 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        SocketServices.h
  3.  
  4.      Contains:    This file contains constants and data structures that
  5.                 describe the Socket Service interface to Card Services.
  6.  
  7.      Version:    Technology: PCMCIA Software 2.0
  8.                 Package:    Universal Interfaces 2.1.1 in “MPW Latest” on ETO #19
  9.  
  10.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  14.                  stack.  Include the file and version information (from above)
  15.                  in the problem description and send to:
  16.                      Internet:    apple.bugs@applelink.apple.com
  17.                      AppleLink:    APPLE.BUGS
  18.   
  19. */
  20.  
  21. #ifndef __SOCKETSERVICES__
  22. #define __SOCKETSERVICES__
  23.  
  24.  
  25. #ifndef __TYPES__
  26. #include <Types.h>
  27. #endif
  28. /*    #include <ConditionalMacros.h>                                */
  29.  
  30. #ifndef __MIXEDMODE__
  31. #include <MixedMode.h>
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if PRAGMA_ALIGN_SUPPORTED
  39. #pragma options align=mac68k
  40. #endif
  41.  
  42. #if PRAGMA_IMPORT_SUPPORTED
  43. #pragma import on
  44. #endif
  45.  
  46. typedef Byte SS_BYTE;
  47.  
  48. typedef Byte SS_FLAGS8;
  49.  
  50. typedef Byte SS_IRQ;
  51.  
  52. typedef Byte SS_PWRLEVEL;
  53.  
  54. typedef UInt16 SS_ADAPTER;
  55.  
  56. typedef UInt16 SS_BCD;
  57.  
  58. typedef UInt16 SS_COUNT;
  59.  
  60. typedef UInt16 SS_EDC;
  61.  
  62. typedef UInt16 SS_FLAGS16;
  63.  
  64. typedef UInt16 SS_PAGE;
  65.  
  66. typedef UInt16 SS_PWRINDEX;
  67.  
  68. typedef UInt16 SS_SIGNATURE;
  69.  
  70. typedef UInt16 SS_SKTBITS;
  71.  
  72. typedef UInt16 SS_SOCKET;
  73.  
  74. typedef UInt16 SS_SPEED;
  75.  
  76. typedef UInt16 SS_WINDOW;
  77.  
  78. typedef UInt16 SS_WORD;
  79.  
  80. typedef UInt32 SS_BASE;
  81.  
  82. typedef UInt32 SS_FLAGS32;
  83.  
  84. typedef UInt32 SS_OFFSET;
  85.  
  86. typedef UInt32 SS_SIZE;
  87.  
  88. typedef Ptr SS_PTR;
  89.  
  90. typedef OSErr SS_RETCODE;
  91.  
  92. typedef struct SS_SCHARTBL SS_SCHARTBL;
  93.  
  94. struct SS_SCHARTBL {
  95.     UInt16                            sktCaps;                    /*    SS_FLAGS16*/
  96.     UInt32                            activeHigh;                    /*    SS_FLAGS32*/
  97.     UInt32                            activeLow;                    /*    SS_FLAGS32*/
  98. };
  99. typedef struct SS_SISTRUCT SS_SISTRUCT;
  100.  
  101. struct SS_SISTRUCT {
  102.     UInt16                            bufferLength;                /*    SS_WORD*/
  103.     UInt16                            dataLength;                    /*    SS_WORD*/
  104.     SS_SCHARTBL                        charTable;                    /*    SS_FLAGS16*/
  105. };
  106. #define STR_SIZE 24
  107. typedef struct SS_VISTRUCT SS_VISTRUCT;
  108.  
  109. struct SS_VISTRUCT {
  110.     UInt16                            bufferLength;                /*    SS_WORD*/
  111.     UInt16                            dataLength;                    /*    SS_WORD*/
  112.     char                            szImplementor[1];            /*    SS_WORD*/
  113.     Byte                            padding[1];                    /*    */
  114. };
  115. typedef struct SS_ACHARTBL SS_ACHARTBL;
  116.  
  117. struct SS_ACHARTBL {
  118.     UInt16                            adpCaps;                    /*    SS_FLAGS16*/
  119.     UInt32                            activeHigh;                    /*    SS_FLAGS32*/
  120.     UInt32                            activeLow;                    /*    SS_FLAGS32*/
  121. };
  122. typedef struct SS_PWRENTRY SS_PWRENTRY;
  123.  
  124. struct SS_PWRENTRY {
  125.     Byte                            powerLevel;                    /*    SS_PWRLEVEL*/
  126.     Byte                            validSignals;                /*    SS_FLAGS8*/
  127. };
  128. typedef struct SS_AISTRUCT SS_AISTRUCT;
  129.  
  130. struct SS_AISTRUCT {
  131.     UInt16                            bufferLength;                /*    SS_WORD*/
  132.     UInt16                            dataLength;                    /*    SS_WORD*/
  133.     SS_ACHARTBL                        charTable;
  134.     UInt16                            numPwrEntries;                /*    SS_WORD*/
  135.     SS_PWRENTRY                        *pwrEntryPtr;
  136. };
  137. typedef struct SS_MEMWINTBL SS_MEMWINTBL;
  138.  
  139. struct SS_MEMWINTBL {
  140.     UInt16                            memWndCaps;                    /*    SS_FLAGS16*/
  141.     UInt32                            firstByte;                    /*    SS_BASE*/
  142.     UInt32                            lastByte;                    /*    SS_BASE*/
  143.     UInt32                            minSize;                    /*    SS_SIZE*/
  144.     UInt32                            maxSize;                    /*    SS_SIZE*/
  145.     UInt32                            reqGran;                    /*    SS_SIZE*/
  146.     UInt32                            reqBase;                    /*    SS_SIZE*/
  147.     UInt32                            reqOffset;                    /*    SS_SIZE*/
  148.     UInt16                            slowest;                    /*    SS_SPEED*/
  149.     UInt16                            fastest;                    /*    SS_SPEED*/
  150. };
  151. typedef struct SS_IOWINTBL SS_IOWINTBL;
  152.  
  153. struct SS_IOWINTBL {
  154.     UInt16                            ioWndCaps;                    /*    SS_FLAGS16*/
  155.     UInt32                            firstByte;                    /*    SS_BASE*/
  156.     UInt32                            lastByte;                    /*    SS_BASE*/
  157.     UInt32                            minSize;                    /*    SS_SIZE*/
  158.     UInt32                            maxSize;                    /*    SS_SIZE*/
  159.     UInt32                            reqGran;                    /*    SS_SIZE*/
  160.     UInt16                            addrLines;                    /*    SS_COUNT*/
  161.     Byte                            eisaSlot;                    /*    SS_FLAGS8*/
  162.     Byte                            padding[1];                    /*    */
  163. };
  164. typedef struct SS_WISTRUCT SS_WISTRUCT;
  165.  
  166. struct SS_WISTRUCT {
  167.     UInt16                            bufferLength;                /*    SS_WORD*/
  168.     UInt16                            dataLength;                    /*    SS_WORD*/
  169.     UInt16                            numTblEntries;                /*    SS_WORD*/
  170.     SS_MEMWINTBL                    memWinTbl;
  171.     SS_IOWINTBL                        ioWinTbl;
  172. };
  173. /*————————————————————————————————————————————————————————————————————————
  174.     function selectors passed to Socket Service entry point
  175. ————————————————————————————————————————————————————————————————————————*/
  176.  
  177. enum {
  178.     fnSSGetAdapterCount            = 0x80,
  179.     fnSSUnsupported81            = 0x81,
  180.     fnSSUnsupported82            = 0x82,
  181.     fnSSGetSSInfo                = 0x83,
  182.     fnSSInquireAdapter            = 0x84,
  183.     fnSSGetAdapter                = 0x85,
  184.     fnSSSetAdapter                = 0x86,
  185.     fnSSInquireWindow            = 0x87,
  186.     fnSSGetWindow                = 0x88,
  187.     fnSSSetWindow                = 0x89,
  188.     fnSSGetPage                    = 0x8A,
  189.     fnSSSetPage                    = 0x8B,
  190.     fnSSInquireSocket            = 0x8C,
  191.     fnSSGetSocket                = 0x8D,
  192.     fnSSSetSocket                = 0x8E,
  193.     fnSSGetStatus                = 0x8F,
  194.     fnSSResetSocket                = 0x90,
  195.     fnSSUnsupported91            = 0x91,
  196.     fnSSUnsupported92            = 0x92,
  197.     fnSSUnsupported93            = 0x93,
  198.     fnSSUnsupported94            = 0x94,
  199.     fnSSInquireEDC                = 0x95,
  200.     fnSSGetEDC                    = 0x96,
  201.     fnSSSetEDC                    = 0x97,
  202.     fnSSStartEDC                = 0x98,
  203.     fnSSPauseEDC                = 0x99,
  204.     fnSSResumeEDC                = 0x9A,
  205.     fnSSStopEDC                    = 0x9B,
  206.     fnSSReadEDC                    = 0x9C,
  207.     fnSSGetVendorInfo            = 0x9D,
  208.     fnSSAcknowledgeInterrupt    = 0x9E,
  209.     fnSSGetSetPriorHandler        = 0x9F,
  210.     fnSSGetSetSSAddr            = 0xA0,
  211.     fnSSGetAccessOffsets        = 0xA1,
  212.     fnSSUnsupportedA2            = 0xA2,
  213.     fnSSUnsupportedA3            = 0xA3,
  214.     fnSSUnsupportedA4            = 0xA4,
  215.     fnSSUnsupportedA5            = 0xA5,
  216.     fnSSUnsupportedA6            = 0xA6,
  217.     fnSSUnsupportedA7            = 0xA7,
  218.     fnSSUnsupportedA8            = 0xA8,
  219.     fnSSUnsupportedA9            = 0xA9,
  220.     fnSSUnsupportedAA            = 0xAA,
  221.     fnSSUnsupportedAB            = 0xAB,
  222.     fnSSUnsupportedAC            = 0xAC,
  223.     fnSSUnsupportedAD            = 0xAD,
  224.     fnSSVendorSpecific            = 0xAE
  225. };
  226.  
  227. /*    SSVendorSpecificPB.function values*/
  228. enum {
  229.     fnVSReserved                = 0x00,
  230.     fnVSGetSocketLocationIcon    = 0x01,
  231.     fnVSGetSocketLocationText    = 0x02,
  232.     fnVSDoSocketLocalization    = 0x03,
  233.     fnVSAppleSocketCapabilities    = 0x04,
  234.     fnVSSleepWakeNotification    = 0x05
  235. };
  236.  
  237. /*————————————————————————————————————————————————————————————————————————
  238.     defines for the Socket Services function codes
  239. ————————————————————————————————————————————————————————————————————————*/
  240. enum {
  241.     AC_IND                        = 1,                            /* adapter characteristics*/
  242.     AC_PWR                        = 2,
  243.     AC_DBW                        = 4
  244. };
  245.  
  246. enum {
  247.     AS_POWERDOWN                = 1,
  248.     AS_MAINTAIN                    = 2
  249. };
  250.  
  251. enum {
  252.     EC_UNI                        = 1,
  253.     EC_BI                        = 2,
  254.     EC_REGISTER                    = 4,
  255.     EC_MEMORY                    = 8,
  256.     EC_PAUSABLE                    = 16,
  257.     EC_WRITE                    = 16
  258. };
  259.  
  260. enum {
  261.     ET_CHECK8                    = 1,
  262.     ET_SDLC16                    = 2
  263. };
  264.  
  265. enum {
  266.     IF_MEMORY                    = 1,
  267.     IF_IO                        = 2
  268. };
  269.  
  270. enum {
  271.     IRQ_HIGH                    = 64,
  272.     IRQ_ENABLE                    = 128
  273. };
  274.  
  275. enum {
  276.     IRQ_MEMORY                    = 4,
  277.     IRQ_IO                        = 4
  278. };
  279.  
  280. enum {
  281.     PS_ATTRIBUTE                = 0x01,
  282.     PS_ENABLED                    = 0x02,
  283.     PS_WP                        = 0x04
  284. };
  285.  
  286. enum {
  287.     PWR_VCC                        = 128,                            /* Power pins in PwrEntry elements*/
  288.     PWR_VPP1                    = 64,
  289.     PWR_VPP2                    = 32
  290. };
  291.  
  292. enum {
  293.     SBM_WP                        = 1,
  294.     SBM_LOCKED                    = 2,
  295.     SBM_EJECT                    = 4,
  296.     SBM_INSERT                    = 8,
  297.     SBM_BVD1                    = 16,
  298.     SBM_BVD2                    = 32,
  299.     SBM_RDYBSY                    = 64,
  300.     SBM_CD                        = 128
  301. };
  302.  
  303. enum {
  304.     SBM_LOCK                    = 16,
  305.     SBM_BATT                    = 32,
  306.     SBM_BUSY                    = 64,
  307.     SBM_XIP                        = 128
  308. };
  309.  
  310. /* Vendor Specific Apple Socket Capabilities */
  311. enum {
  312.     SBM_SLEEP_PWR                = 1
  313. };
  314.  
  315. enum {
  316.     WC_COMMON                    = 1,
  317.     WC_IO                        = 2,
  318.     WC_ATTRIBUTE                = 4,
  319.     WC_TYPE_MASK                = 7,
  320.     WC_WAIT                        = 128
  321. };
  322.  
  323. enum {
  324.     WC_BASE                        = 1,
  325.     WC_SIZE                        = 2,
  326.     WC_WENABLE                    = 4,
  327.     WC_8BIT                        = 8,
  328.     WC_16BIT                    = 16,
  329.     WC_BALIGN                    = 32,
  330.     WC_POW2                        = 64,
  331.     WC_CALIGN                    = 128,
  332.     WC_PAVAIL                    = 256,
  333.     WC_PSHARED                    = 512,
  334.     WC_PENABLE                    = 1024,
  335.     WC_WP                        = 2048
  336. };
  337.  
  338. enum {
  339.     WC_INPACK                    = 128,
  340.     WC_EISA                        = 256,
  341.     WC_CENABLE                    = 512
  342. };
  343.  
  344. enum {
  345.     WS_IO                        = 1,
  346.     WS_ENABLED                    = 2,
  347.     WS_16BIT                    = 4
  348. };
  349.  
  350. enum {
  351.     WS_PAGED                    = 8,
  352.     WS_EISA                        = 16,
  353.     WS_CENABLE                    = 32,
  354.     WS_SWAP_LITTLE_TO_BIG_ENDIAN = 64
  355. };
  356.  
  357. enum {
  358.     SS_SIG_VALUE                = 0x5353                        /* 'SS'*/
  359. };
  360.  
  361. enum {
  362.     SS_CMPL_1_00                = 0x0100,                        /* compliant with rev 1.0 of SS standard*/
  363.     SS_CMPL_1_01                = 0x0101,                        /* compliant with rev 1.01 of SS standard*/
  364.     SS_CMPL_2_00                = 0x0200,                        /* compliant with rev 2.0 of SS standard*/
  365.     SS_CMPL_2_10                = 0x0210                        /* compliant with rev 2.1 of SS standard*/
  366. };
  367.  
  368. /*————————————————————————————————————————————————————————————————————————
  369.     Universal ProcPtr for Socket Service entry point
  370. ————————————————————————————————————————————————————————————————————————*/
  371. typedef pascal short (*PCCardSSEntryProcPtr)(UInt16 fnCode, Ptr callPB, Ptr dataPtr);
  372.  
  373. #if GENERATINGCFM
  374. typedef UniversalProcPtr PCCardSSEntryUPP;
  375. #else
  376. typedef PCCardSSEntryProcPtr PCCardSSEntryUPP;
  377. #endif
  378.  
  379. enum {
  380.     uppPCCardSSEntryProcInfo = kPascalStackBased
  381.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  382.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt16)))
  383.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  384.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr)))
  385. };
  386.  
  387. #if GENERATINGCFM
  388. #define NewPCCardSSEntryProc(userRoutine)        \
  389.         (PCCardSSEntryUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardSSEntryProcInfo, GetCurrentArchitecture())
  390. #else
  391. #define NewPCCardSSEntryProc(userRoutine)        \
  392.         ((PCCardSSEntryUPP) (userRoutine))
  393. #endif
  394.  
  395. #if GENERATINGCFM
  396. #define CallPCCardSSEntryProc(userRoutine, fnCode, callPB, dataPtr)        \
  397.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppPCCardSSEntryProcInfo, (fnCode), (callPB), (dataPtr))
  398. #else
  399. #define CallPCCardSSEntryProc(userRoutine, fnCode, callPB, dataPtr)        \
  400.         (*(userRoutine))((fnCode), (callPB), (dataPtr))
  401. #endif
  402.  
  403. /*————————————————————————————————————————————————————————————————————————
  404.     Card Services calls used by a Socket Service
  405. ————————————————————————————————————————————————————————————————————————*/
  406. typedef struct CSEventEntryPB CSEventEntryPB;
  407.  
  408. struct CSEventEntryPB {
  409.     UInt32                            ssHandlerID;
  410.     UInt16                            adapter;
  411.     UInt16                            socket;
  412.     UInt16                            message;
  413.     Byte                            intrpBits;
  414.     Byte                            padding;
  415. };
  416. typedef pascal void (*PCCardCSEntryProcPtr)(CSEventEntryPB *pb);
  417.  
  418. #if GENERATINGCFM
  419. typedef UniversalProcPtr PCCardCSEntryUPP;
  420. #else
  421. typedef PCCardCSEntryProcPtr PCCardCSEntryUPP;
  422. #endif
  423.  
  424. enum {
  425.     uppPCCardCSEntryProcInfo = kPascalStackBased
  426.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CSEventEntryPB*)))
  427. };
  428.  
  429. #if GENERATINGCFM
  430. #define NewPCCardCSEntryProc(userRoutine)        \
  431.         (PCCardCSEntryUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardCSEntryProcInfo, GetCurrentArchitecture())
  432. #else
  433. #define NewPCCardCSEntryProc(userRoutine)        \
  434.         ((PCCardCSEntryUPP) (userRoutine))
  435. #endif
  436.  
  437. #if GENERATINGCFM
  438. #define CallPCCardCSEntryProc(userRoutine, pb)        \
  439.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppPCCardCSEntryProcInfo, (pb))
  440. #else
  441. #define CallPCCardCSEntryProc(userRoutine, pb)        \
  442.         (*(userRoutine))((pb))
  443. #endif
  444.  
  445. /*------------        AddSocketServices        ------------                            */
  446. typedef struct AddSocketServicesPB AddSocketServicesPB;
  447.  
  448. struct AddSocketServicesPB {
  449.     PCCardSSEntryUPP                ssEntry;                    /* -> given to CS for its use*/
  450.     PCCardCSEntryUPP                csEntry;                    /* <- taken from CS so we know where to enter*/
  451.     UInt32                            dataPtr;
  452.     UInt32                            attributes;
  453.     UInt16                            numAdapters;
  454.     UInt16                            numSockets;
  455. };
  456. /*------------         ReplaceSocketServices    ------------                            */
  457. typedef struct ReplaceSocketServicesPB ReplaceSocketServicesPB;
  458.  
  459. struct ReplaceSocketServicesPB {
  460.     PCCardSSEntryUPP                ssEntry;
  461.     PCCardSSEntryUPP                oldSSEntry;
  462.     UInt32                            dataPtr;
  463.     UInt16                            socket;
  464.     UInt16                            numSockets;
  465.     UInt16                            attributes;
  466. };
  467. extern pascal OSErr CSAddSocketServices(AddSocketServicesPB *pb)
  468.  TWOWORDINLINE(0x7050, 0xAAF0);
  469. extern pascal OSErr CSReplaceSocketServices(ReplaceSocketServicesPB *pb)
  470.  TWOWORDINLINE(0x7051, 0xAAF0);
  471. /*————————————————————————————————————————————————————————————————————————
  472.     parameter blocks for each Socket Service function
  473. ————————————————————————————————————————————————————————————————————————*/
  474. typedef struct SSAcknowledgeInterruptPB SSAcknowledgeInterruptPB;
  475.  
  476. struct SSAcknowledgeInterruptPB {
  477.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  478.     UInt16                            sockets;                    /*    SS_SKTBITS*/
  479. };
  480. typedef struct SSGetAccessOffsetsPB SSGetAccessOffsetsPB;
  481.  
  482. struct SSGetAccessOffsetsPB {
  483.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  484.     Byte                            mode;                        /*    SS_BYTE*/
  485.     Byte                            reserved;                    /*    padding*/
  486.     UInt16                            count;                        /*    SS_COUNT*/
  487.     Ptr                                buffer;                        /*    SS_PTR*/
  488.     UInt16                            numAvail;                    /*    SS_COUNT*/
  489. };
  490. typedef struct SSGetAdapterCountPB SSGetAdapterCountPB;
  491.  
  492. struct SSGetAdapterCountPB {
  493.     UInt16                            totalAdapters;                /*    SS_COUNT*/
  494.     UInt16                            sig;                        /*    SS_SIGNATURE*/
  495. };
  496. typedef struct SSGetSetAdapterPB SSGetSetAdapterPB;
  497.  
  498. struct SSGetSetAdapterPB {
  499.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  500.     Byte                            state;                        /*    SS_FLAGS8*/
  501.     Byte                            irqStatus;                    /*    SS_IRQ*/
  502. };
  503. typedef struct SSGetSetEDCPB SSGetSetEDCPB;
  504.  
  505. struct SSGetSetEDCPB {
  506.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  507.     UInt16                            edc;                        /*    SS_EDC*/
  508.     UInt16                            socket;                        /*    SS_SOCKET*/
  509.     Byte                            state;                        /*    SS_FLAGS8*/
  510.     Byte                            edcType;                    /*    SS_FLAGS8*/
  511. };
  512. typedef struct SSGetSetPagePB SSGetSetPagePB;
  513.  
  514. struct SSGetSetPagePB {
  515.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  516.     UInt16                            window;                        /*    SS_WINDOW*/
  517.     UInt16                            page;                        /*    SS_PAGE*/
  518.     Byte                            state;                        /*    SS_FLAGS8*/
  519.     Byte                            reserved;                    /*    padding*/
  520.     UInt32                            offset;                        /*    SS_OFFSET*/
  521. };
  522. typedef struct SSGetSetPriorHandlerPB SSGetSetPriorHandlerPB;
  523.  
  524. struct SSGetSetPriorHandlerPB {
  525.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  526.     Byte                            mode;                        /*    SS_FLAGS8*/
  527.     Byte                            reserved;                    /*    padding*/
  528.     Ptr                                handler;                    /*    SS_PTR*/
  529. };
  530. typedef struct SSGetSetSocketPB SSGetSetSocketPB;
  531.  
  532. struct SSGetSetSocketPB {
  533.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  534.     UInt16                            socket;                        /*    SS_SOCKET*/
  535.     UInt16                            vccIndex;                    /*    SS_PWRINDEX*/
  536.     UInt16                            vpp1Index;                    /*    SS_PWRINDEX*/
  537.     UInt16                            vpp2Index;                    /*    SS_PWRINDEX*/
  538.     Byte                            scIntMask;                    /*    SS_FLAGS8*/
  539.     Byte                            state;                        /*    SS_FLAGS8*/
  540.     Byte                            ctlInd;                        /*    SS_FLAGS8*/
  541.     Byte                            ireqRouting;                /*    SS_IRQ*/
  542.     Byte                            ifType;                        /*    SS_FLAGS8*/
  543.     Byte                            padding[1];                    /*    */
  544. };
  545. typedef struct SSGetSetSSAddrPB SSGetSetSSAddrPB;
  546.  
  547. struct SSGetSetSSAddrPB {
  548.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  549.     Byte                            mode;                        /*    SS_BYTE*/
  550.     Byte                            subfunc;                    /*    SS_BYTE*/
  551.     UInt16                            numAddData;                    /*    SS_COUNT*/
  552.     Ptr                                buffer;                        /*    SS_PTR*/
  553. };
  554. typedef struct SSGetSetWindowPB SSGetSetWindowPB;
  555.  
  556. struct SSGetSetWindowPB {
  557.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  558.     UInt16                            window;                        /*    SS_WINDOW*/
  559.     UInt16                            socket;                        /*    SS_SOCKET*/
  560.     UInt32                            size;                        /*    SS_SIZE*/
  561.     Byte                            state;                        /*    SS_FLAGS8*/
  562.     Byte                            reserved;                    /*    padding*/
  563.     UInt16                            speed;                        /*    SS_SPEED*/
  564.     UInt32                            base;                        /*    SS_BASE*/
  565. };
  566. typedef struct SSGetSSInfoPB SSGetSSInfoPB;
  567.  
  568. struct SSGetSSInfoPB {
  569.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  570.     UInt16                            compliance;                    /*    SS_BCD*/
  571.     UInt16                            numAdapters;                /*    SS_COUNT*/
  572.     UInt16                            firstAdapter;                /*    SS_ADAPTER*/
  573. };
  574. typedef struct SSGetStatusPB SSGetStatusPB;
  575.  
  576. struct SSGetStatusPB {
  577.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  578.     UInt16                            socket;                        /*    SS_SOCKET*/
  579.     Byte                            cardState;                    /*    SS_FLAGS8*/
  580.     Byte                            socketState;                /*    SS_FLAGS8*/
  581.     Byte                            ctlInd;                        /*    SS_FLAGS8*/
  582.     Byte                            ireqRouting;                /*    SS_IRQ*/
  583.     Byte                            ifType;                        /*    SS_FLAGS8*/
  584.     Byte                            padding[1];                    /*    */
  585. };
  586. typedef struct SSGetVendorInfoPB SSGetVendorInfoPB;
  587.  
  588. struct SSGetVendorInfoPB {
  589.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  590.     Byte                            vendorInfoType;                /*    SS_BYTE*/
  591.     Byte                            reserved;                    /*    padding*/
  592.     Ptr                                buffer;                        /*    SS_PTR*/
  593.     UInt16                            release;                    /*    SS_BCD*/
  594. };
  595. typedef struct SSInquireAdapterPB SSInquireAdapterPB;
  596.  
  597. struct SSInquireAdapterPB {
  598.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  599.     Ptr                                buffer;                        /*    SS_PTR*/
  600.     UInt16                            numSockets;                    /*    SS_COUNT*/
  601.     UInt16                            numWindows;                    /*    SS_COUNT*/
  602.     UInt16                            numEDCs;                    /*    SS_COUNT*/
  603. };
  604. typedef struct SSInquireEDCPB SSInquireEDCPB;
  605.  
  606. struct SSInquireEDCPB {
  607.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  608.     UInt16                            edc;                        /*    SS_EDC*/
  609.     UInt16                            sockets;                    /*    SS_SKTBITS*/
  610.     Byte                            caps;                        /*    SS_FLAGS8*/
  611.     Byte                            types;                        /*    SS_FLAGS8*/
  612. };
  613. typedef struct SSInquireSocketPB SSInquireSocketPB;
  614.  
  615. struct SSInquireSocketPB {
  616.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  617.     UInt16                            socket;                        /*    SS_SOCKET*/
  618.     Ptr                                buffer;                        /*    SS_PTR*/
  619.     Byte                            scIntCaps;                    /*    SS_FLAGS8*/
  620.     Byte                            scRptCaps;                    /*    SS_FLAGS8*/
  621.     Byte                            ctlIndCaps;                    /*    SS_FLAGS8*/
  622.     Byte                            padding[1];                    /*    */
  623. };
  624. typedef struct SSInquireWindowPB SSInquireWindowPB;
  625.  
  626. struct SSInquireWindowPB {
  627.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  628.     UInt16                            window;                        /*    SS_WINDOW*/
  629.     Ptr                                buffer;                        /*    SS_PTR*/
  630.     Byte                            wndCaps;                    /*    SS_FLAGS8*/
  631.     Byte                            reserved;                    /*    padding*/
  632.     UInt16                            sockets;                    /*    SS_SKTBITS*/
  633. };
  634. typedef struct SSPauseEDCPB SSPauseEDCPB;
  635.  
  636. struct SSPauseEDCPB {
  637.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  638.     UInt16                            edc;                        /*    SS_EDC*/
  639. };
  640. typedef struct SSReadEDCPB SSReadEDCPB;
  641.  
  642. struct SSReadEDCPB {
  643.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  644.     UInt16                            edc;                        /*    SS_EDC*/
  645.     UInt16                            value;                        /*    SS_WORD*/
  646. };
  647. typedef struct SSResetSocketPB SSResetSocketPB;
  648.  
  649. struct SSResetSocketPB {
  650.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  651.     UInt16                            socket;                        /*    SS_SOCKET*/
  652. };
  653. typedef struct SSResumeEDCPB SSResumeEDCPB;
  654.  
  655. struct SSResumeEDCPB {
  656.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  657.     UInt16                            edc;                        /*    SS_EDC*/
  658. };
  659. typedef struct SSStartEDCPB SSStartEDCPB;
  660.  
  661. struct SSStartEDCPB {
  662.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  663.     UInt16                            edc;                        /*    SS_EDC*/
  664. };
  665. typedef struct SSStopEDCPB SSStopEDCPB;
  666.  
  667. struct SSStopEDCPB {
  668.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  669.     UInt16                            edc;                        /*    SS_EDC*/
  670. };
  671. typedef struct SSVendorSpecificPB SSVendorSpecificPB;
  672.  
  673. struct SSVendorSpecificPB {
  674.     UInt16                            vsFunction;                    /*    SS_WORD*/
  675.     UInt16                            adapter;                    /*    SS_ADAPTER*/
  676.     UInt16                            socket;                        /*    SS_SOCKET*/
  677.     UInt16                            bufferSize;                    /*    SS_WORD*/
  678.     Ptr                                buffer;                        /*    SS_PTR*/
  679.     UInt32                            attributes;                    /*    SS_LONG*/
  680. };
  681. /*    ‘attributes’ constants */
  682.  
  683. enum {
  684.     kSSGoingToSleep                = 0x00000001,
  685.     kSSWakingFromSleep            = 0x00000002
  686. };
  687.  
  688. /*————————————————————————————————————————————————————————————————————————
  689.     Non-specific Socket Services Functions
  690. ————————————————————————————————————————————————————————————————————————*/
  691. extern pascal SS_RETCODE SSGetAdapterCount(SSGetAdapterCountPB *pb, Ptr dataPtr);
  692. /*————————————————————————————————————————————————————————————————————————
  693.     Adapter Functions
  694. ————————————————————————————————————————————————————————————————————————*/
  695. extern pascal SS_RETCODE SSAcknowledgeInterrupt(SSAcknowledgeInterruptPB *pb, Ptr dataPtr);
  696. extern pascal SS_RETCODE SSGetSetPriorHandler(SSGetSetPriorHandlerPB *pb, Ptr dataPtr);
  697. extern pascal SS_RETCODE SSGetSetSSAddr(SSGetSetSSAddrPB *pb, Ptr dataPtr);
  698. extern pascal SS_RETCODE SSGetAccessOffsets(SSGetAccessOffsetsPB *pb, Ptr dataPtr);
  699. extern pascal SS_RETCODE SSGetAdapter(SSGetSetAdapterPB *pb, Ptr dataPtr);
  700. extern pascal SS_RETCODE SSGetSSInfo(SSGetSSInfoPB *pb, Ptr dataPtr);
  701. extern pascal SS_RETCODE SSGetVendorInfo(SSGetVendorInfoPB *pb, Ptr dataPtr);
  702. extern pascal SS_RETCODE SSInquireAdapter(SSInquireAdapterPB *pb, Ptr dataPtr);
  703. extern pascal SS_RETCODE SSSetAdapter(SSGetSetAdapterPB *pb, Ptr dataPtr);
  704. extern pascal SS_RETCODE SSVendorSpecific(SSVendorSpecificPB *pb, Ptr dataPtr);
  705. /*————————————————————————————————————————————————————————————————————————
  706.     Socket Functions
  707. ————————————————————————————————————————————————————————————————————————*/
  708. extern pascal SS_RETCODE SSGetSocket(SSGetSetSocketPB *pb, Ptr dataPtr);
  709. extern pascal SS_RETCODE SSGetStatus(SSGetStatusPB *pb, Ptr dataPtr);
  710. extern pascal SS_RETCODE SSInquireSocket(SSInquireSocketPB *pb, Ptr dataPtr);
  711. extern pascal SS_RETCODE SSResetSocket(SSResetSocketPB *pb, Ptr dataPtr);
  712. extern pascal SS_RETCODE SSSetSocket(SSGetSetSocketPB *pb, Ptr dataPtr);
  713. /*————————————————————————————————————————————————————————————————————————
  714.     Window Functions
  715. ————————————————————————————————————————————————————————————————————————*/
  716. extern pascal SS_RETCODE SSGetPage(SSGetSetPagePB *pb, Ptr dataPtr);
  717. extern pascal SS_RETCODE SSGetWindow(SSGetSetWindowPB *pb, Ptr dataPtr);
  718. extern pascal SS_RETCODE SSInquireWindow(SSInquireWindowPB *pb, Ptr dataPtr);
  719. extern pascal SS_RETCODE SSSetPage(SSGetSetPagePB *pb, Ptr dataPtr);
  720. extern pascal SS_RETCODE SSSetWindow(SSGetSetWindowPB *pb, Ptr dataPtr);
  721. /*————————————————————————————————————————————————————————————————————————
  722.     Error Detection Functions
  723. ————————————————————————————————————————————————————————————————————————*/
  724. extern pascal SS_RETCODE SSGetEDC(SSGetSetEDCPB *pb, Ptr dataPtr);
  725. extern pascal SS_RETCODE SSInquireEDC(SSInquireEDCPB *pb, Ptr dataPtr);
  726. extern pascal SS_RETCODE SSPauseEDC(SSPauseEDCPB *pb, Ptr dataPtr);
  727. extern pascal SS_RETCODE SSReadEDC(SSReadEDCPB *pb, Ptr dataPtr);
  728. extern pascal SS_RETCODE SSResumeEDC(SSResumeEDCPB *pb, Ptr dataPtr);
  729. extern pascal SS_RETCODE SSSetEDC(SSGetSetEDCPB *pb, Ptr dataPtr);
  730. extern pascal SS_RETCODE SSStartEDC(SSStartEDCPB *pb, Ptr dataPtr);
  731. extern pascal SS_RETCODE SSStopEDC(SSStopEDCPB *pb, Ptr dataPtr);
  732.  
  733. #if PRAGMA_IMPORT_SUPPORTED
  734. #pragma import off
  735. #endif
  736.  
  737. #if PRAGMA_ALIGN_SUPPORTED
  738. #pragma options align=reset
  739. #endif
  740.  
  741. #ifdef __cplusplus
  742. }
  743. #endif
  744.  
  745. #endif /* __SOCKETSERVICES__ */
  746.